home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 July / CD 3 / redhat-6.2.iso / RedHat / instimage / usr / lib / anaconda / mouse.py < prev    next >
Encoding:
Python Source  |  2000-03-08  |  4.4 KB  |  149 lines

  1. import kudzu
  2. from simpleconfig import SimpleConfigFile
  3. from snack import *
  4. import os
  5.  
  6. class Mouse (SimpleConfigFile):
  7.     mice = {
  8.     "ALPS - GlidePoint (PS/2)" :
  9.         ("ps/2", "GlidePointPS/2", "psaux", 1),
  10.     "ASCII - MieMouse (serial)" :
  11.         ("ms3", "IntelliMouse", "ttyS", 1),
  12.     "ASCII - MieMouse (PS/2)" : 
  13.         ("ps/2", "NetMousePS/2", "psaux", 1),
  14.     "ATI - Bus Mouse" :
  15.         ("Busmouse", "BusMouse", "atibm", 1),
  16.     "Generic - 2 Button Mouse (serial)" :
  17.         ("Microsoft", "Microsoft", "ttyS", 1),
  18.     "Generic - 3 Button Mouse (serial)" :
  19.         ("Microsoft", "Microsoft", "ttyS", 0),
  20.     "Generic - 2 Button Mouse (PS/2)" :
  21.         ("ps/2", "PS/2", "psaux", 1),
  22.     "Generic - 3 Button Mouse (PS/2)" :
  23.         ("ps/2", "PS/2", "psaux", 0),
  24.     "Genius - NetMouse (serial)" :
  25.            ("ms3", "IntelliMouse", "ttyS", 1),
  26.     "Genius - NetMouse (PS/2)" :
  27.         ("netmouse", "NetMousePS/2", "psaux", 1),
  28.     "Genius - NetMouse Pro (PS/2)" :
  29.         ("netmouse", "NetMousePS/2", "psaux", 1),
  30.     "Genius - NetScroll (PS/2)" :
  31.         ("netmouse", "NetScrollPS/2", "psaux", 1),
  32.     "Kensington - Thinking Mouse (PS/2)" :
  33.         ("ps/2", "ThinkingMousePS/2", "psaux", 1),
  34.     "Logitech - C7 Mouse (serial, old C7 type)" :
  35.         ("Logitech", "Logitech", "ttyS", 0),
  36.     "Logitech - CC Series (serial)" :
  37.         ("logim", "MouseMan", "ttyS", 0),
  38.     "Logitech - Bus Mouse" :
  39.         ("Busmouse", "BusMouse", "logibm", 0),
  40.     "Logitech - MouseMan/FirstMouse (serial)" :
  41.         ("MouseMan", "MouseMan", "ttyS", 0),
  42.     "Logitech - MouseMan/FirstMouse (PS/2)" :
  43.         ("ps/2", "PS/2", "psaux", 0),
  44.     "Logitech - MouseMan+/FirstMouse+ (serial)" :
  45.         ("pnp", "IntelliMouse", "ttyS", 0),
  46.     "Logitech - MouseMan+/FirstMouse+ (PS/2)" :
  47.         ("ps/2", "MouseManPlusPS/2", "psaux", 0),
  48.     "Microsoft - Compatible Mouse (serial)" :
  49.         ("Microsoft",    "Microsoft", "ttyS", 1),
  50.     "Microsoft - Rev 2.1A or higher (serial)" :
  51.         ("pnp", "Auto", "ttyS", 1),
  52.     "Microsoft - IntelliMouse (serial)" :
  53.         ("ms3", "IntelliMouse", "ttyS", 1),
  54.     "Microsoft - IntelliMouse (PS/2)" :
  55.         ("imps2", "IMPS/2", "psaux", 1), 
  56.     "Microsoft - Bus Mouse" :
  57.         ("Busmouse", "BusMouse", "inportbm", 1),
  58.     "Mouse Systems - Mouse (serial)" :
  59.         ("MouseSystems", "MouseSystems", "ttyS", 1), 
  60.     "MM - Series (serial)" :
  61.         ("MMSeries", "MMSeries", "ttyS", 1),
  62.     "MM - HitTablet (serial)" :
  63.         ("MMHitTab", "MMHittab", "ttyS", 1),
  64.         "None - None" :
  65.                 ("none", "none", "null", 0),
  66.     "Sun - Mouse":
  67.         ("sun", "sun", "sunmouse", 0),
  68.     }
  69.  
  70.     # XXX fixme - externalize
  71.     def __init__ (self, xmouseType = None, mouseType = None):
  72.         self.info = {}
  73.         self.device = None
  74.  
  75.     if (xmouseType):
  76.         (proto, emulate, device) = xmouseType
  77.         mouseType = None
  78.         mice = self.mice.keys()
  79.         mice.sort()
  80.         for desc in mice:
  81.         (gpm, x11, dev, em) = self.mice[desc]
  82. #        print "trying %s: '%s', '%s'" % (desc, x11, proto)
  83.         if (x11 == proto and emulate == em):
  84.             if (desc[:7] == "Generic" or desc[:3] == "Sun"):
  85.             mouseType = (desc, emulate, device)
  86.             break
  87.         self.device = device
  88.         if not mouseType:
  89.         raise KeyError, "unknown X11 mouse type %s" % proto
  90.  
  91.         if (mouseType):
  92.         if (len(mouseType) == 3):
  93.         apply(self.set, mouseType)
  94.     else:
  95.         list = kudzu.probe(kudzu.CLASS_MOUSE, kudzu.BUS_UNSPEC, 
  96.                    kudzu.PROBE_ONE)
  97.         if (list):
  98.         (device, module, desc) = list[0]
  99.  
  100.         if device == "sunmouse":
  101.             self.set("Sun - Mouse", 0)
  102.         elif device == "psaux":
  103.             self.set("Generic - 3 Button Mouse (PS/2)", 0)
  104.         else:
  105.             self.set("Generic - 2 Button Mouse (serial)", 1)
  106.  
  107.         self.device = device
  108.         else:
  109.         self.set("Generic - 2 Button Mouse (serial)", 1, 'ttyS0')
  110.  
  111.     def available (self):
  112.         return self.mice
  113.  
  114.     def get (self):
  115.     return (self.info ["FULLNAME"], self.emulate)
  116.  
  117.     def __str__(self):
  118.     if (self.emulate):
  119.         self.info["XEMU3"] = "yes"
  120.     else:
  121.         self.info["XEMU3"] = "no"
  122.     return SimpleConfigFile.__str__(self)
  123.  
  124.     def makeLink(self, root):
  125.     try:
  126.         os.unlink(root + "/dev/mouse")
  127.     except:
  128.         pass
  129.     if (self.device):
  130.         os.symlink(self.device, root + "/dev/mouse")
  131.  
  132.     def getDevice(self):
  133.     return self.device
  134.  
  135.     def setDevice(self, device):
  136.     self.device = device
  137.  
  138.     def set (self, mouse, emulateThreeButtons = -1, thedev = None):
  139.         (gpm, x11, dev, em) = self.mice[mouse]
  140.         self.info["MOUSETYPE"] = gpm
  141.         self.info["XMOUSETYPE"] = x11
  142.         self.info["FULLNAME"] = mouse
  143.         if emulateThreeButtons != -1:
  144.             self.emulate = emulateThreeButtons
  145.         else:
  146.             self.emu = em
  147.         if not self.device and thedev: self.device = thedev
  148.     if not self.device: self.device = dev
  149.